lib/repo-commit: Factor out min-free-space-size error reporting
authorUmang Jain <umang@endlessm.com>
Thu, 5 Jul 2018 11:01:48 +0000 (16:31 +0530)
committerAtomic Bot <atomic-devel@projectatomic.io>
Fri, 6 Jul 2018 19:59:10 +0000 (19:59 +0000)
Improves code readability.

Closes: #1671
Approved by: jlebon

src/libostree/ostree-repo-commit.c

index 05635afd645e5a4ac2392fea7bbd67ecd4deec11..0b48323ed3b4653d1b4df4a04b20c565ee413e42 100644 (file)
@@ -429,6 +429,28 @@ add_size_index_to_metadata (OstreeRepo        *self,
   return g_variant_ref_sink (g_variant_builder_end (builder));
 }
 
+static gboolean
+throw_min_free_space_error (OstreeRepo  *self,
+                            guint64      bytes_required,
+                            GError     **error)
+{
+  const char *err_msg = NULL;
+  g_autofree char *err_msg_owned = NULL;
+
+  if (bytes_required > 0)
+    {
+      g_autofree char *formatted_required = g_format_size (bytes_required);
+      err_msg = err_msg_owned = g_strdup_printf ("would be exceeded, at least %s requested", formatted_required);
+    }
+  else
+    err_msg  = "would be exceeded";
+
+  if (self->min_free_space_percent > 0)
+    return glnx_throw (error, "min-free-space-percent '%u%%' %s", self->min_free_space_percent, err_msg);
+  else
+    return glnx_throw (error, "min-free-space-size %" G_GUINT64_FORMAT "MB %s", self->min_free_space_mb, err_msg);
+}
+
 typedef struct {
   gboolean initialized;
   GLnxTmpfile tmpf;
@@ -524,13 +546,7 @@ _ostree_repo_bare_content_commit (OstreeRepo                 *self,
         {
           self->cleanup_stagedir = TRUE;
           g_mutex_unlock (&self->txn_lock);
-          g_autofree char *formatted_required = g_format_size (st_buf.st_size);
-          if (self->min_free_space_percent > 0)
-           return glnx_throw (error, "min-free-space-percent '%u%%' would be exceeded, %s more required",
-                              self->min_free_space_percent, formatted_required);
-          else
-            return glnx_throw (error, "min-free-space-size %luMB woulid be exceeded, %s more required",
-                               self->min_free_space_mb, formatted_required);
+          return throw_min_free_space_error (self, st_buf.st_size, error);
         }
       /* This is the main bit that needs mutex protection */
       self->txn.max_blocks -= object_blocks;
@@ -927,13 +943,7 @@ write_content_object (OstreeRepo         *self,
           guint64 bytes_required = (guint64)object_blocks * self->txn.blocksize;
           self->cleanup_stagedir = TRUE;
           g_mutex_unlock (&self->txn_lock);
-          g_autofree char *formatted_required = g_format_size (bytes_required);
-          if (self->min_free_space_percent > 0)
-            return glnx_throw (error, "min-free-space-percent '%u%%' would be exceeded, %s more required",
-                               self->min_free_space_percent, formatted_required);
-          else
-            return glnx_throw (error, "min-free-space-size %" G_GUINT64_FORMAT "MB would be exceeded, %s more required",
-                               self->min_free_space_mb, formatted_required);
+          return throw_min_free_space_error (self, bytes_required, error);
         }
       /* This is the main bit that needs mutex protection */
       self->txn.max_blocks -= object_blocks;
@@ -1646,16 +1656,9 @@ ostree_repo_prepare_transaction (OstreeRepo     *self,
     self->txn.max_blocks = bfree - reserved_blocks;
   else
     {
-      guint64 bytes_required = bfree * self->txn.blocksize;
       self->cleanup_stagedir = TRUE;
       g_mutex_unlock (&self->txn_lock);
-      g_autofree char *formatted_free = g_format_size (bytes_required);
-      if (self->min_free_space_percent > 0)
-        return glnx_throw (error, "min-free-space-percent '%u%%' would be exceeded, %s available",
-                           self->min_free_space_percent, formatted_free);
-      else
-        return glnx_throw (error, "min-free-space-size %" G_GUINT64_FORMAT "MB would be exceeded, %s available",
-                           self->min_free_space_mb, formatted_free);
+      return throw_min_free_space_error (self, 0, error);
     }
   g_mutex_unlock (&self->txn_lock);